home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 117
/
FreelogNo117-OctobreNovembre2013.iso
/
Programmation
/
jedit
/
jedit5.1.0install.exe
/
{app}
/
macros
/
Editing
/
Greedy_Delete.bsh
< prev
next >
Wrap
Text File
|
2013-07-28
|
2KB
|
88 lines
/*
* Greedy_Delete.bsh - If a buffer is using soft tabs,
* this macro will delete tabSize number of spaces, if
* all the characters between the caret and the next tab
* stop are spaces. In all other cases a single character
* is deleted.
*
* Copyright (C) 2004 Ollie Rutherfurd <oliver@jedit.org>
*
* $Id: Greedy_Delete.bsh 5230 2005-07-20 13:31:08Z orutherfurd $
*/
/**
* @param onlyFullTabs if true, multiple spaces are only
* removed if they would constitute
* a 'complete' tab.
*/
void greedyDelete(View view, boolean onlyFullTabs)
{
JEditTextArea textArea = view.getTextArea();
JEditBuffer buffer = textArea.getBuffer();
int caret = textArea.getCaretPosition();
int caretLine = textArea.getCaretLine();
int lineStart = textArea.getLineStartOffset(caretLine);
int lineEnd = textArea.getLineEndOffset(caretLine);
if(buffer.getBooleanProperty("noTabs") == true)
{
// if anything is selected, use standard
if(textArea.getSelection().length != 0)
{
textArea.delete();
}
// if at the end of the line, go to the
// start of the next line (+1 for \n)
else if(caret+1 >= lineEnd)
{
textArea.delete();
}
else
{
int col = caret - lineStart;
int tabSize = buffer.getIntegerProperty("tabSize",8);
// unlikely, but just in case
if(tabSize <= 0)
{
textArea.delete();
}
else
{
int toTabStop = (((col+tabSize)-1) % tabSize) + 1;
// don't wrap to next line
if(caret+toTabStop > lineEnd){
textArea.delete();
return;
}
int count = 0;
for(int i=0; i < toTabStop; i++)
{
if(!" ".equals(buffer.getText(caret+i,1)))
break;
count += 1;
}
// if onlyFullTabs must be only spaces to
// the tabStop and must have tabSize number
// of spaces to remove them all.
if(onlyFullTabs == false || count == tabSize){
buffer.remove(caret,count);
}
else{
textArea.delete();
}
}
}
}
else
textArea.delete();
}
if(buffer.isReadOnly())
Toolkit.getDefaultToolkit().beep();
else
greedyDelete(view,true);